#install.packages('ggVennDiagram')Venn Diagrams
library(ggplot2)
library(ggVennDiagram)data <- data.frame(
Person = c("Alice", "Bob", "Charlie", "David",
"Eve", "Frank", "Grace", "Hannah", "Isaac", "Jack"),
Toys = I(list(
c("car", "doll", "ball"), # Toys Alice has (3 toys)
c("doll", "puzzle"), # Toys Bob has (2 toys)
c("car", "puzzle", "kite", "bike"), # Toys Charlie has (4 toys)
c("robot", "kite", "ball"), # Toys David has (3 toys)
c("doll", "kite", "blocks", "robot"), # Toys Eve has (4 toys)
c("train", "car", "kite"), # Toys Frank has (3 toys)
c("doll", "train", "ball", "robot", "kite"), # Toys Grace has (5 toys)
c("car", "bike", "train"), # Toys Hannah has (3 toys)
c("robot", "doll", "colors"), # Toys Isaac has (3 toys)
c("blocks", "doll", "puzzle", "bike", # Toys Jack has (5 toys)
"dinosaur")
))
)
# Convert the data into a list of sets for Venn Diagram input
toy_sets <- setNames(data$Toys, data$Person)
toy_sets$Alice
[1] "car" "doll" "ball"
$Bob
[1] "doll" "puzzle"
$Charlie
[1] "car" "puzzle" "kite" "bike"
$David
[1] "robot" "kite" "ball"
$Eve
[1] "doll" "kite" "blocks" "robot"
$Frank
[1] "train" "car" "kite"
$Grace
[1] "doll" "train" "ball" "robot" "kite"
$Hannah
[1] "car" "bike" "train"
$Isaac
[1] "robot" "doll" "colors"
$Jack
[1] "blocks" "doll" "puzzle" "bike" "dinosaur"
Create a Venn Diagram
ggVennDiagram(toy_sets[1:3])Choose a different name for each Venn plot
ggVennDiagram(toy_sets[1:3],
category.names = c("ALICE","BOB","CHARLIE"))Setting the color for labels for each Venn plots
ggVennDiagram(toy_sets[1:3],
set_color=c('blue','red','black'),
category.names = c("ALICE","BOB","CHARLIE"))Different Venn Plots of Various Sizes
ggVennDiagram(toy_sets[1:2], label='count', label_color = "firebrick")ggVennDiagram(toy_sets[1:3], label='percent', label_color = "firebrick")ggVennDiagram(toy_sets[1:4], label='both', label_color = "firebrick")ggVennDiagram(toy_sets[1:5], label='none')ggVennDiagram(toy_sets[1:6], label='count')ggVennDiagram(toy_sets[1:7], label='none')Setting Edges and color palette and adding note
ggVennDiagram(toy_sets[1:4], edge_lty = "dashed", edge_size = 1) +
scale_fill_distiller(palette = 'Reds') +
labs(
title='How many toys each Person has ?',
subtitle = 'Plot: Venn Diagram',
caption = Sys.Date()
)Venn Diagram doesn’t support more than 7 Venn plots. We need to use Upset charts to visualize more than 7 data points.
ggVennDiagram(toy_sets[1:2], force_upset = TRUE,
nintersects = 10, relative_height = 1, relative_width = 0.3)ggVennDiagram(toy_sets, force_upset = TRUE,
nintersects = 15, relative_height = 1, relative_width = 0.3)